package com.macro.mall.service;


import com.macro.mall.dto.PoiInfoDTO;
import com.macro.mall.model.StoreQueryParam;
import com.macro.mall.model.XhsStore;
import com.macro.mall.model.request.PlaceQueryRequest;
import com.macro.mall.model.response.*;
import com.macro.mall.model.vo.store.XhsStoreVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

public interface PoiFacilityService {
    /**
     * 获取全部门店设施标签
     * @return 设施标签列表
     */
    FacilityListResponse getAllFacilityTags() throws RuntimeException;






    /**
     * 获取专业号绑定的POI信息
     * @param pageNo 页码，从1开始
     * @param pageSize 每页大小，最大100
     * @return POI列表
     * @throws Exception 异常
     */
    XhsBaseResponse<PoiListData> getPoiList(Integer pageNo, Integer pageSize) throws Exception;


    /**
     * 查询所有门店列表
     * @return
     */
    List<PoiInfoDTO> findAllPoi();











    /**
     * 查询可用地点
     * @param request 查询参数
     * @return 地点列表
     * @throws Exception 异常
     */
    PlaceQueryResponse queryPlaces(PlaceQueryRequest request) throws Exception;













    /**
     * 获取POI下的商品列表
     * @param poiId POI ID
     * @return 商品列表响应
     * @throws Exception 异常
     */
    PoiProductListResponse getProductsByPoi(String poiId) throws Exception;

    /**
     * 保存所有的门店信息 - 转化经纬度到市信息
     */
    void saveStoreDB();

    /**
     * 查询门店信息
     * @return
     */
    List<XhsStoreVo> selStore(StoreQueryParam storeQueryParam );


    /**
     * 获取所有门店地区列表
     * @return
     */
    List<String> getCityList();

    /**
     * 根据经纬度查询地区
     * @param storeQueryParam
     * @return
     */
    String selCity(StoreQueryParam storeQueryParam);

    /**
     * 导入Excel更新门店手机号
     * @param file Excel文件
     * @return 更新结果，包含成功和失败的记录数
     */
    Map<String, Integer> importStorePhoneFromExcel(MultipartFile file) throws Exception;
}
